﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Oracle.DataAccess;
using System.Data.OracleClient;
using EntitiesLayer.Entities;
using System.Data;

namespace DataLayer.DAO
{
    public class SeguimientoqrRespuestaDAO
    {
        #region "Procedures and Methods Oracle10g"

        private Connection.Connection cn;
        private OracleConnection objCn;
        public SeguimientoqrRespuestaDAO()
        {
            cn = new Connection.Connection();
            objCn = cn.Conecta();
        }

        public int insertQRRespuesta(QuejaReclamo objqyr, Archivo objarchivo)
        {
            int resultado = 0;
            try
            {
                OracleCommand cmd = new OracleCommand("INSERTSEGQRRESPUESTA", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new OracleParameter("Rrec_Cod_Rec", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.Vrec_Cod_Rec));
                cmd.Parameters.Add(new OracleParameter("Rsqr_Fecha_Respuesta", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.Dsqr_Fecha_Respuesta));
                cmd.Parameters.Add(new OracleParameter("Rsqr_Desc_Acciones", OracleType.NVarChar, 1000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.Vsqr_Desc_Acciones));
                cmd.Parameters.Add(new OracleParameter("Rgen_Cod_Mot_Gen", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.Vgen_Cod_Mot_Gen));
                cmd.Parameters.Add(new OracleParameter("Resp_Cod_Mot_Esp", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.Vesp_Cod_Mot_Esp));
                cmd.Parameters.Add(new OracleParameter("Rsqr_Desc_Resultado", OracleType.NVarChar, 1000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.Vsqr_Desc_Resultado));
                cmd.Parameters.Add(new OracleParameter("Rarc_Cod_Archivo", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, (objqyr.Varc_Cod_Archivo == null ? "" : objqyr.Varc_Cod_Archivo)));
                cmd.Parameters.Add(new OracleParameter("Rrec_Usuario_Creacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_USUARIO_CREACION));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Creacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.DREC_FECHA_CREACION));
                cmd.Parameters.Add(new OracleParameter("Rest_Codestado", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.Vest_Codestado));
                cmd.Parameters.Add(new OracleParameter("Rarc_Nom_Archivo", OracleType.NVarChar, 200, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objarchivo.VARC_NOM_ARCHIVO));
                cmd.Parameters.Add(new OracleParameter("Rarc_Ruta_Archivo", OracleType.NVarChar, 300, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objarchivo.VARC_RUTA_ARCHIVO));

                resultado = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {
                if (objCn != null)
                {
                    objCn.Close();
                }
            }
            return resultado;
        }


        public int updateSegQr(SeguimientoqrRespuesta objsr)
        {
            int resultado = 0;
            try
            {
                OracleCommand cmd = new OracleCommand("Updateqrrespuesta", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;
                //cmd.Parameters.Add(new OracleParameter("RECORDSET", OracleType.Cursor, 100, ParameterDirection.Output, null, DataRowVersion.Current, false, null));
                cmd.Parameters.Add(new OracleParameter("Rsqr_Id_Respuesta", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objsr.ISQR_ID_RESPUESTA));
                cmd.Parameters.Add(new OracleParameter("Rsqr_Desc_Acciones", OracleType.NVarChar, 1000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objsr.VSQR_DESC_ACCIONES));
                cmd.Parameters.Add(new OracleParameter("Rsqr_Desc_Resultado", OracleType.NVarChar, 1000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objsr.VSQR_DESC_RESULTADO));
                cmd.Parameters.Add(new OracleParameter("Rgen_Cod_Mot_Gen", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objsr.VGEN_COD_MOT_GEN));
                cmd.Parameters.Add(new OracleParameter("Resp_Cod_Mot_Esp", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objsr.VESP_COD_MOT_ESP));
                cmd.Parameters.Add(new OracleParameter("Rrec_Usuario_Actualizacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objsr.VREC_USUARIO_ACTUALIZACION));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Actualizacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objsr.DREC_FECHA_ACTUALIZACION));
                //cmd.ExecuteReader(CommandBehavior.SingleResult);
                resultado = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {
                if (objCn != null)
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int deleteQRRespuesta(SeguimientoqrRespuesta p)
        {
            int resultado = 0;

            using (OracleCommand cmd = new OracleCommand("DELETEQRRESPUESTA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                OracleParameter p1 = new OracleParameter("R_ID_RESPUESTA", OracleType.Number);
                p1.Value = p.ISQR_ID_RESPUESTA;
                cmd.Parameters.Add(p1);
                try
                {
                    objCn.Open();
                    resultado = cmd.ExecuteNonQuery();
                }
                catch (Exception ex) { objCn.Dispose(); }
                finally { objCn.Close(); }
            }
            return resultado;
        }



        #endregion
    }
}
